home *** CD-ROM | disk | FTP | other *** search
/ AmigActive 10 / AACD 10.iso / AACD / Magazine / Online / httpproxy / goodies / httpdel.rexx next >
OS/2 REXX Batch file  |  1996-08-20  |  2KB  |  105 lines

  1. /*
  2. ** httpdel.rexx
  3. **
  4. ** REQUIREMENTS:
  5. **      rexxdossupport.library 2.0+
  6. **      rexxsupport.library
  7. **      httpdelete
  8. **      List 42.7+
  9. **      Run
  10. **
  11. ** $(C): 1996, Bruno Barbera, Taranto
  12. ** $VER: httpdel.rexx 1.01 (20.7.96)
  13. */
  14.  
  15. CALL Time('R')
  16.  
  17. lib='rexxdossupport.library';   IF ~Show('L',lib) THEN CALL AddLib(lib,0,-30)
  18. lib='rexxsupport.library';      IF ~Show('L',lib) THEN CALL AddLib(lib,0,-30)
  19.  
  20. prg.TEMPLATE='CACHEDIR=DIR/A,TIME/K/N,MAXSIZE/K/N,PARAMS/F'
  21. prg.PIPENAME='PIPE:'Pragma('I')
  22. prg.TIMEDELTA=5
  23.  
  24. httpd.PATH='AmiTCP:bin/httpdelete'
  25.  
  26. PARSE ARG prg.PARAMS
  27.  
  28. IF prg.PARAMS='?' THEN DO
  29.     CALL WriteCh('STDOUT',prg.TEMPLATE': ')
  30.     prg.PARAMS=ReadLn('STDIN')
  31.     END
  32.  
  33. IF ~ReadArgs(prg.PARAMS,prg.TEMPLATE,'args.') THEN DO
  34.     SAY Fault(rc)
  35.     EXIT 20
  36.     END
  37.  
  38. IF Symbol('args.MAXSIZE')=='VAR' THEN DO
  39.     CALL Pragma('D',args.CACHEDIR)
  40.     
  41.     ADDRESS COMMAND 'Run <>NIL: List >'prg.PIPENAME 'ALL FILES SORT D LFORMAT "%n*n%l"'
  42.  
  43.     IF Open('Pipe',prg.PIPENAME) THEN DO
  44.         maxsize=args.MAXSIZE*1024
  45.         sizesum=0
  46.         
  47.         DO UNTIL EOF('Pipe')
  48.             filename=ReadLn('Pipe')
  49.  
  50.             IF filename=='' THEN ITERATE
  51.  
  52.             filesize=ReadLn('Pipe'); IF filesize=='empty' THEN filesize=0
  53.             sizesum=sizesum+filesize
  54.  
  55.             IF sizesum>maxsize THEN DO
  56.                 IF Symbol('prevfile')=='LIT' THEN args.TIME=0
  57.                 ELSE args.TIME=FileSecs(prevfile)+prg.TIMEDELTA
  58.                 
  59.                 CALL Time('R')
  60.  
  61.                 DO UNTIL EOF('Pipe'); CALL ReadLn('Pipe'); END
  62.                 END
  63.             ELSE prevfile=filename
  64.             END
  65.         
  66.         CALL Close('Pipe')
  67.         END
  68.     END
  69.  
  70. prg.CLINE=httpd.PATH 'CACHEDIR' args.CACHEDIR
  71. IF Symbol('args.TIME')=='VAR' THEN prg.CLINE=prg.CLINE 'TIME' args.TIME+Trunc(Time('E'))
  72. IF Symbol('args.PARAMS')=='VAR' THEN prg.CLINE=prg.CLINE args.PARAMS
  73.  
  74. ADDRESS COMMAND prg.CLINE
  75. EXIT
  76.  
  77. /* Start FileSecs(file)
  78. ** Restituisce l'età (in secondi) del file dato
  79. */
  80.  
  81. FileSecs:
  82. RETURN SysTime()-FileTime(Arg(1))
  83.  
  84. /* End */
  85. /* Start SysTime()
  86. ** Restituisce il numero di secondi trascorsi dall'1 Gen 1978
  87. */
  88.  
  89. SysTime:
  90. RETURN (Date('I')*86400)+Time('S')
  91.  
  92. /* End */
  93. /* Start FileTime(file)
  94. ** Restituisce la data di un file come secondi trascorsi dall'1 Gen 1978
  95. */
  96.  
  97. FileTime:
  98. PROCEDURE
  99.  
  100. fs=StateF(Arg(1))
  101.  
  102. RETURN (Word(fs,5)*86400)+(Word(fs,6)*60)+Trunc(Word(fs,7)/50)
  103.  
  104. /* End */
  105.